package br.com.nemesis.controle;

import br.com.nemesis.dao.UsuarioDAO;
import br.com.nemesis.excecao.PersistenciaExcecao;
import br.com.nemesis.jsf.util.FacesUtil;
import br.com.nemesis.modelo.Usuario;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean(name = "usuarioEditarControle")
@RequestScoped
public class UsuarioEditarControle implements IEditar {

    private Long id;
    private Usuario objeto;

    public String salvar() {
        try {
            UsuarioDAO usuarioDAO = new UsuarioDAO();
            if (objeto.getId() == null) {
                usuarioDAO.salvar(objeto);
            } else {
                usuarioDAO.alterar(objeto);
            }
            usuarioDAO = null;
            FacesUtil.msgInformativa("a informação salva com sucesso.");
        } catch (PersistenciaExcecao e) {
            FacesUtil.msgErro(e.getClass().getName() + ": " + e.getMessage());
        }
        return "/usuario/listar.nms?faces-redirect=true";
    }

    public String retornar() {
        return "/usuario/listar.nms?faces-redirect=true";
    }

    public String remover() {
        try {
            UsuarioDAO usuarioDAO = new UsuarioDAO();
            usuarioDAO.remover(objeto);
            usuarioDAO = null;
        } catch (PersistenciaExcecao e) {
            FacesUtil.msgErro(e.getClass().getName() + ": " + e.getMessage());
        }
        return "/cidade/listar.nms?faces-redirect=true";
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        try {
            UsuarioDAO usuarioDAO = new UsuarioDAO();
            this.objeto = usuarioDAO.buscar(id);
            usuarioDAO = null;
        } catch (PersistenciaExcecao e) {
            FacesUtil.msgErro(e.getClass().getName() + ": " + e.getMessage());
        }
        this.id = id;
    }

    public Usuario getObjeto() {
        if (this.objeto == null) {
            this.objeto = new Usuario();
        }
        return objeto;
    }

    public void setObjeto(Usuario objeto) {
        this.objeto = objeto;
    }
    
}